AWS CLIを使用してAWS Backupを作成してみた。
概要
この記事では、AWS CLIを使用してAWS Backupを作成してみました。ここでは、AWSバックアップを使用してEC2インスタンスのバックアップを作成してみました。Cronジョブでバックアッププランを作成し、EC2タグを含むBackup Selectionを作成しました。AWS Backupはタグに基づいてインスタンスを識別し、毎日午後5時にバックアップを実行します。
やってみた
EC2の作成
- この設定で EC2インスタンスを作成しておきます。
- AMI : Amazon Linux 2 AMI
- インスタンスタイプ : t2.micro
- サブネット:パブリックサブネット
- タグ :
- Key : ec2-backup
- Value : true
- Security Group :
- Inbound :SSH
IAMロールの作成
- AWSBackupにすべてのAWSサービスのバックアップ操作を実行することを許可するIAMロールを作成しておきます。
- 以下のポリシーを含むjsonファイルを作成しておきます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "backup.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 次のコマンドを使用して、上記のポリシーでIAMロールを作成しておきます。
//create an IAM role aws iam create-role --role-name "backup-role" --assume-role-policy-document file://assumeRole.json //Output { "Role": { "Path": "/", "RoleName": "backup-role", "RoleId": "...........", "Arn": "arn:aws:iam::xxxxxxxxxxxx:role/backup-role", "CreateDate": "2022-05-16T03:43:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "backup.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
- [AWSBackupServiceRolePolicyForBackup と AWSBackupServiceRolePolicyForRestores]ポリシーをIAMロールにアタッチしておきます。
aws iam attach-role-policy --role-name backup-role --policy-arn 'arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup' aws iam attach-role-policy --role-name backup-role --policy-arn 'arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores'
Backup vaultの作成
- 次のコマンドを使用してバックアップボールトを作成しておきます。コマンドでバックアップボールト名を指定しておきます。
//Create Backup Vault aws backup create-backup-vault --backup-vault-name backup-vault --region us-east-1 //Output { "BackupVaultName": "backup-vault", "BackupVaultArn": "arn:aws:backup:us-east-1:xxxxxxxxxxxx:backup-vault:backup-vault", "CreationDate": "2022-05-16T09:02:31.297000+05:30" }
Backup Planの作成
- 次のコードでJSONファイル[backup-plan.json]を作成しておきます。
- ファイルには、バックアッププランのパラメータを含むバックアップルールが含まれています。
- バックアップは毎日午後5時に実行されます。
{ "BackupPlanName": "backup-plan", "Rules": [{ "RuleName": "backup-rule", "TargetBackupVaultName": "backup-vault", "ScheduleExpression": "cron(0 5 ? * * *)", "Lifecycle": { "DeleteAfterDays": 7 } }] }
- 次のコマンドを使用してバックアッププランを作成しておきます。
//Create Backup Plan aws backup create-backup-plan --backup-plan file://backup-plan.json --region us-east-1 //Output { "BackupPlanId": "abdc12-ef34-ghi5-abc4-abc45", "BackupPlanArn": "arn:aws:backup:us-east-1:xxxxxxxxxxxx:backup-plan:abdc12-ef34-ghi5-abc4-abc45", "CreationDate": "2022-05-16T09:30:46.491000+05:30", "VersionId": "...................." }
Backup Selectionの作成
- バックアップするリソースのパラメーターを含むJSONファイルを作成しておきます。
- EC2インスタンスのタグを含む[backup-selection.json]ファイルを作成しておきます。
- ファイルで、前の手順で作成したIAMロールのArnを指定しておきます。
{ "SelectionName": "backup-selection", "IamRoleArn": "arn:aws:iam::xxxxxxxxxxx:role/backup-role", "ListOfTags": [{ "ConditionType": "STRINGEQUALS", "ConditionKey": "ec2-backup", "ConditionValue": "true" }] }
- 次のコマンドを使用してBackup Selectionを作成しておきます。
//Create Backup Selection aws backup create-backup-selection --backup-plan-id abdc12-ef34-ghi5-abc4-abc45 --backup-selection file://backup-selection --region us-east-1 //Output { "SelectionId": "abc00-de00-ab00-dc00-abcdef123", "BackupPlanId": "abdc12-ef34-ghi5-abc4-abc45", "CreationDate": "2022-05-16T09:38:58.826000+05:30" }
リソースの確認
コンソールでは、リソースが作成されていることを確認できます。
Backup Vault
Backup Plan
Backup Rule
Backup Selection
- コンソールでは、バックアップの最後の実行時間を確認できます。
まとめ
AWS CLIを使用してAWS Backupを作成してみました。ここでは、タグに基づいてEC2バックアップを試しました。他のストレージリソースのバックアップを試すことができます。
Reference :